High availability (HA) is a system design protocol and associated implementation that ensures a high level of operational continuity (of a system, application, service, and/or associated data) during a given measurement period (which may be a year, a month, and/or any other measurement period). Availability may refer to the ability of the user community to access the system, whether to submit new work, update or alter existing work, or collect the results of previous work. If a user cannot access the system, it may be said to be unavailable. Generally, the term downtime may be used to refer to periods of system unavailability. Typically, downtime may be planned or unplanned.
A typical HA system for a specific application includes two servers, one of which is an active (production) server, and the other is a standby (replica) server. The application usually runs on the active server. When a planned downtime is triggered or an unplanned downtime event occurs at the active server indicating that the application will be unavailable, the HA system may bring up the application on the standby server to ensure continuous operation. For a planned downtime, this procedure may be referred to as switchover. For an unplanned downtime, this procedure may be referred to as failover. As such, high availability may refer to the system's ability to monitor the health of the active server and automatically failover/switchover (referred to generally as a “transfer”) to the standby server and redirect end users during the planned/unplanned downtime.
More and more mission critical applications, for example, Microsoft SharePoint, BlackBerry, etc., are architecturally distributed today. Some high availability (HA) solutions partially support distributed applications by separately protecting all the distributed servers. However, there is a need for a HA solution that can effectively protect the whole distributed application, thereby significantly improving business continuity and reducing management cost.
These and other drawbacks exist.